Method to receive udp response messages across multiple incoming udp ports

ABSTRACT

An apparatus includes a plurality of UDP ports capable of receiving UDP messages and a message generator to generate a request message to be transmitted to remote endpoints connected over a network via a connectionless diagram protocol. The request message includes a header section having data identifying a plurality of reply-to addresses corresponding to the UDP ports.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention generally relates to systems and methods for requesting and receiving response messages from a number of remote endpoints connected over a network, and more particularly relates to features of UDP messages.

2. Description of the Related Art

WS-addressing is a specification that is applied to Extensible Markup Languages (“XMLs”) (such as Simple Object Access Protocol (“SOAP”)) and defines an XML schema that indicates certain Message Information headers. Among other information, these headers provide source and destination headers that indicate where the message came from, where it is going, and where to reply back to.

User Datagram Protocol (“UDP”) is a connectionless datagram protocol that may be used to broadcast/multicast messages over a network. The delivery of UDP messages to target recipients may be characterized as a “best-effort” in a sense that the messages are not guaranteed to be delivered and can be lost before reaching their target destination endpoints. Also, UDP does not provide a means to verify that a message has properly reached its target destination endpoint.

FIGS. 5A and 5B illustrate a conventional network system for exchanging messages between a number of devices connected over a network. In FIG. 5A, a UDP request message is broadcasted/multicasted from a requesting device 500 to multiple endpoints 550 (such as those endpoints listening to a multicast address or a well-known IP broadcast address). In response to the request message, each of the endpoints 550-1 through 550-N (also referred to herein as “responding devices”) generates and transmits a response message to the requesting device 500, as shown in FIG. 5B. In the system illustrated in FIGS. 5A and 5B, the response messages from the responding devices 550-1 through 550-N are all directed to the same UDP port 510 on the requesting device 500. Consequently, the UDP port 510 of the requesting device 500 will potentially receive one response message from each of the responding devices 550-1 through 550-N that has received the request message. Predicting the number of response messages that will be return to the requesting device is difficult if not impossible. In operation, response messages from the responding devices 550-1 through 550-N are queued into the buffer 512 of the UDP port 510 on the requesting device 500. If the buffer 512 is not large enough to queue all the response messages, then the buffer 512 will become overloaded and some of the response messages will be dropped, resulting in some response messages being lost forever. In such a situation, neither the responding devices nor the requesting device may be aware of the response messages being lost.

SUMMARY OF THE INVENTION

According to an aspect of the present invention, an embodiment is directed to a method and a corresponding apparatus for generating a message including data identifying a plurality of reply-to addresses, and transmitting the message to a plurality of remote endpoints connected over a network via a connectionless datagram protocol.

According to another aspect of the present invention, an embodiment is directed to a system including a first apparatus and a second apparatus connected to a plurality of remote endpoints over a network. Each of the first apparatus and the second apparatus has at least one UDP port capable of receiving UDP messages. The first apparatus generates a message including data identifying a plurality of reply-to addresses corresponding to the UDP ports of the first apparatus and the second apparatus and transmits the request messages to plurality of remote endpoints connected over the network.

Further features and aspect of the present invention will become apparent from the following detailed description of exemplary embodiments with reference to the attached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

Exemplary embodiments of the present invention are described below with reference to the drawings.

FIG. 1A is a block diagram of a requesting device sending a request message to a number of responding devices according to an embodiment of the present invention.

FIG. 1B is a block diagram of response message being sent to the requesting device according to an embodiment of the present invention.

FIG. 2 is a flowchart diagram illustrating operations involved in handling messages between devices according to an embodiment of the present invention.

FIG. 3A is a diagram illustrating a conventional UDP message format.

FIG. 3B is a diagram illustrating a first UDP message format according to an embodiment of the present invention.

FIG. 3C is a diagram illustrating a second UDP message format according to another embodiment of the present invention.

FIG. 4A is a block diagram of a requesting device sending a request message to a number of responding devices according to another embodiment of the present invention.

FIG. 4B is a block diagram of response message being sent to the requesting device and an auxiliary receiving device according to another embodiment of the present invention.

FIG. 5A is a block diagram of a requesting device sending a request message to a number of responding devices according to a conventional system.

FIG. 5B is a block diagram of response message being sent to the requesting device according to a conventional system.

FIG. 6 shows an example of an XML document that includes <ReplyTo> element indicating that response messages are to be sent to a particular Uniform Resource Locator (URL) according to a conventional WS-Addressing specification.

DESCRIPTION OF THE EMBODIMENTS

In the following description, specific details are set forth in order to provide a thorough understanding of embodiments of the present invention. However, it will be apparent to one skilled in the art that embodiments of the present invention may be practiced without these specific details. In other instances, well-known components, structures and techniques have not been shown in detail in order to avoid obscuring the present invention. It is noted that the references to “an” or “one” embodiment of this disclosure are not necessarily directed to the same embodiment, and such references mean at least one.

Referring initially to FIGS. 1A and 1B, a system is illustrated for handling messages (e.g., datagrams) between devices connected over a network according to an embodiment of the present invention. FIG. 1A shows a requesting device 100 sending a message to a number of endpoint devices 150-1 through 150-N (also referred to herein as “responding devices”) via a connectionless datagram protocol (e.g., UDP). More specifically, in an embodiment, the requesting device 100 sends a request message containing a request for a response via a broadcast/multicast address to the endpoint devices 150-1 through 150-N. In response to the request message, each of the endpoint devices 150-1 through 150-N generates and transmits a response message to the requesting device 100, as shown in FIG. 1B.

In contrast to the conventional system illustrated with reference to FIGS. 5A and 5B, the UDP response messages from the responding devices 150-1 through 150-N are not directed to the same single UDP port on the requesting device 100. As shown, the requesting device 100 includes a number of ports (e.g., UDP ports) 110-1 through 110-M capable of receiving incoming messages (e.g., UDP response messages). In accordance with an embodiment, the requesting device 100 utilizes multiple incoming ports 110-1 through 110-M to spread the “same type” response messages across multiple ports. The spreading the same type response message across multiple ports is useful in situations where a request message is expected to generate a large number of response messages, so many, in fact, that a single UDP port will not be able to handle them all and some response messages would be dropped as a result of the single UDP port being overloaded.

Also included in the requesting device 100 are a message generator 120 and a communication interface 124 to transmit messages generated by the message generator to the plurality of responding devices 150. More specifically, in an embodiment, when the requesting device 100 wants to make a query, it constructs a query data and passes the query data to the UDP message generator 120 (e.g. UDP socket), which adds a header section to the query data and passes the resulting UDP message to the communication interface 124 (e.g., network layer). The communication interface 124 encapsulates the UDP message into a datagram and sends the datagram to each destination endpoint (e.g., responding devices 150). According to an embodiment, the header section added by the UDP message generator 120 contains a plurality of reply-to addresses corresponding to the plurality of UDP ports 110-1 through 110-M of the requesting device 110. The header section and the UDP message formats will be described in more detail with reference to FIGS. 3B and 3C.

In XML messaging (e.g., SOAP messaging), there exists an element named <ReplyTo> that is defined by the WS-Addressing specification. FIG. 6 shows an example of an XML document that includes <ReplyTo> element 600 indicating where to send the response message according to an existing WS-Addressing specification. However, according to the existing WS-Addressing specification, maximum of one reply-to address can be associated with <ReplyTo> element 600 for each request message. As a result, according to the existing WS-Addressing specification, each request message can only specify one reply-to address, which means that all of the response messages will go to the same address indicated in the <ReplyTo> Element.

In accordance with an embodiment, the <ReplyTo> schema of the WS-Addressing specification is extended to enable multiple reply-to addresses to be listed within the <ReplyTo> element.

In accordance with an embodiment, the requesting device 100 and the responding devices 150-1 through 150-N will have an understanding that each responding device can send their response messages to “any” of reply-to addresses listed in the request message transmitted by the requesting device 100, and that each “reply to addresses” would be considered equivalent. In an embodiment, when each of the responding devices 150-1 through 150-N receives a request message, each respective responding device is configured to randomly choose which of the reply-to-addresses to respond to. This would have the effect of “spreading out” the high concentration of UDP messages across multiple UDP ports 110-1 through 110-M of the requesting device 100. In an embodiment, the requesting device 100 is capable of determining how many incoming ports to open up based on the size of each UDP buffer 112-1 through 112-M. For requesting devices that have small UDP buffers per port, they can create many incoming ports, and vice-a-versa. Also this can be measured dynamically at runtime, and if the requesting device 100 determines that it is dropping incoming UDP packets, it can decide to open additional incoming ports.

By creating multiple incoming ports 110-1 through 110-M, the requesting device 100 is capable of receiving a very large number of response messages even on a network with a large number of listening endpoint devices (e.g. 200+ endpoint devices). This feature overcomes or at least mitigates problems associated with UDP being a non-guaranteed delivery protocol and each UDP port having a limited UDP buffer size. More specifically, multiple incoming ports 110-1 through 110-M provided in the requesting device 100 serve to reduce the chance of UDP response messages being dropped due to UDP buffer being overloaded.

FIG. 2 shows operations involved in handling messages between devices according to an embodiment of the present invention. In step S205, a requesting device generates a request message containing a request for a response from each of recipient devices. In step S210, the requesting device includes, in a header section of the request message, a plurality of reply-to addresses corresponding to a plurality of incoming ports designated for receiving response messages. In step S215, the requesting device transmits the request message to a plurality of remote endpoint devices connected over a network. In an embodiment, the request message is broadcasted or multicasted from the requesting device to the endpoint devices.

When the request message arrives at each of the endpoint devices (e.g., responding devices 150-1 through 150-N shown in FIG. 1), each of the endpoint devices will use the information contained in the header section of the request message to select one of the reply-to addresses for sending a response message. The selection of one of the reply-to addresses can be accomplished in a number of different ways. For example, in an embodiment, a responding device may be configured to randomly select (e.g., using random number generator) one of the reply-to addresses listed in the header section of the request message and transmit a response message to the randomly selected reply-to address. As a result of each responding device individually selecting one of the reply-to addresses and transmitting a response message to the selected reply-to addresses, the response messages from the responding messages will be received across the plurality of incoming ports of the requesting device in step S220.

FIGS. 3A through 3C illustrate how a conventional UDP message format may be modified to accommodate a number of reply-to address information. Firstly, FIG. 3A shows a conventional UDP message format 305, in which the UDP header section 307 is divided into source port field 310, destination port field 315, length field 320 and checksum field 325 to identify the source port that is sending the message, the destination port of the message, the message length and a checksum value, respectively. The source port identified in the source port field 310 may be assumed to be the reply-to address, i.e., the port to which a response message is to be sent. The destination port field 315 may contain multicast group destination address.

FIG. 3B shows a first UDP message format 350 according to an embodiment of the present invention, in which the header section is extended to include additional reply-to address information. As shown in FIG. 3B, the UDP header section 352 is extended to include a plurality of reply-to addresses 355-1 through 355-M. Each of the reply-to addresses 355 included in a UDP message corresponds to each respective incoming UDP port designated to receive response messages.

FIG. 3C shows a second UDP message format 380 according to another embodiment of the present invention, in which a supplemental header 384 is attached between the UDP header 382 and the data payload 397. As shown in FIG. 3C, the supplemental header section 384 includes a plurality of reply-to addresses 395-1 through 395-N.

FIGS. 4A and 4B show a system for handling messages between devices connected over a network according to another embodiment of the present invention. The network system shown in FIGS. 4A and 4B further includes an auxiliary receiving device 400 that is capable of receiving response messages for the requesting device 100. According to this embodiment, the response messages from the responding devices 150-1 through 150-N are spread across multiple devices (e.g., requesting device 100 and the auxiliary receiving device 400). In operation, the requesting device 100 generates a request message including data identifying a plurality of reply-to addresses, in which at least one of the reply-to addresses corresponds to an incoming port of the requesting device 100 and at least one of the reply-to addresses corresponds to an incoming port of the auxiliary receiving device 400.

While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all modifications, equivalent structures and functions. 

1. An apparatus comprising: a plurality of ports capable of receiving messages, a message generator to generate a message including data identifying a plurality of reply-to addresses corresponding to the plurality of ports; and a communication interface to transmit the message to a plurality of devices connected over a network via a connectionless datagram protocol.
 2. The apparatus of claim 1, wherein the message includes a user datagram protocol (UDP) header section having a plurality of fields for containing the data identifying the plurality of reply-to addresses.
 3. The apparatus of claim 1, wherein the message includes a UDP header section and a supplemental header section having a plurality of fields for containing the data identifying the plurality of reply-to addresses.
 4. The apparatus of claim 1, wherein the plurality of ports comprises a plurality of UDP ports capable of receiving UDP messages.
 5. The apparatus of claim 1, wherein at least one of the reply-to addresses identified in the message corresponds to a port of another apparatus connected to the network.
 6. The apparatus of claim 1, wherein the message is a request message containing a request for a response from each of the recipient devices.
 7. The apparatus of claim 6, wherein the request message includes an option feature to reply to any one of the plurality of reply-to addresses included in a header section of the request message.
 8. The apparatus of claim 6, wherein the request message comprises a simple object access protocol (SOAP) message transmitted via a user datagram protocol (UDP) communication protocol.
 9. A method comprising: generating a message including data identifying a plurality of reply-to addresses; and transmitting the message to a plurality of devices connected over a network via a connectionless datagram protocol.
 10. The method of claim 9, wherein the message includes a header section having a plurality of fields for containing the data identifying the plurality of reply-to addresses.
 11. The method of claim 9, further comprising: identifying a plurality Uniform Resource Locators (URLs) within <ReplyTo> element of an XML document.
 12. The method of claim 9, wherein the message is a request message containing a request for a response from each of the recipient devices.
 13. The method of claim 12, further comprising: receiving response messages from the plurality of devices in response to the request message across the plurality of reply-to addresses.
 14. The method of claim 13, wherein the request message and the response messages comprises SOAP messages transmitted via UDP communication protocol.
 15. The method of claim 9, further comprising: configuring a plurality of ports capable of receiving messages, wherein the plurality of reply-to addresses included in the message corresponds to the plurality of ports.
 16. The method of claim 15, wherein the plurality of ports comprises a plurality of UDP ports capable of receiving UDP messages.
 17. The method of claim 9, wherein at least one of the reply-to addresses included the message corresponds to a port of a first apparatus connected to the network and at least one of the reply-to addresses included in the message corresponds to a port of a second apparatus connected to the network.
 18. The method of claim 12, further comprising: incorporating an option feature in the request message to enable a responder to reply to any one of the plurality of reply-to addresses included in a header section of the request message.
 19. A system comprising: a first apparatus connected to a plurality of remote endpoints over a network, the first apparatus having at least one UDP port capable of receiving UDP messages; and a second apparatus connected to the first apparatus and the plurality of remote endpoints over the network, the second apparatus having at least one UDP port capable of receiving UDP messages, wherein the first apparatus generates a request message including data identifying a plurality of reply-to addresses and transmits the request messages to plurality of remote endpoints connected over the network.
 20. The system of claim 19, wherein the reply-to addresses identified in a header section of the request message corresponds to addresses of the at least one UDP port of the first apparatus and the at least one UDP port of the second apparatus.
 21. The system of claim 19, wherein the request message includes a header section having a plurality of fields for containing the plurality of reply-to addresses.
 22. The system of claim 19, wherein the request message includes options to reply to any one of the plurality of reply-to addresses included in the header section.
 23. The system of claim 19, wherein at least one of the remote endpoints is capable of generating a response message, randomly selecting one of the reply-to addresses identified in the message and transmitting the reply message to the selected one of the reply-to addresses.
 24. The system of claim 19, wherein the request message is transmitted via a connectionless datagram protocol.
 25. The system of claim 19, wherein the request message comprises a SOAP message transmitted via a UDP communication protocol.
 26. A computer-readable medium storing instructions which, when executed by an apparatus, causes the apparatus to perform operations comprising: generating a message including data identifying a plurality of reply-to addresses; and transmitting the message to a plurality of devices connected over a network via a connectionless datagram protocol.
 27. The computer-readable medium of claim 26, wherein the message includes a header section having a plurality of fields for containing the data identifying the plurality of reply-to addresses.
 28. The computer-readable medium of claim 26, wherein the message is a request message containing a request for a response from each of the devices connected over the network.
 29. The computer-readable medium of claim 26, wherein the operations further comprises: receiving response message from the plurality of devices in response to the request message across the plurality of reply-to addresses.
 30. The computer-readable medium of claim 29, wherein the request message and the response messages comprises SOAP messages transmitted via UDP communication protocol.
 31. The computer-readable medium of claim 26, wherein the operations further comprises: configuring a plurality of UDP ports capable of receiving UDP messages, wherein the plurality of reply-to addresses included in the message corresponds to the plurality of UDP ports.
 32. The computer-readable medium of claim 26, wherein at least one of the reply-to addresses included in the message corresponds to a port of a first apparatus connected to the network and at least one of the reply-to addresses included in the message corresponds to a port of a second apparatus connected to the network. 